iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0

前幾天分享完了我們會使用到的雲端元件,接下來我們先來設計一下應用程式的 API 規格。
首先盤點一下我們需要的功能

  • 身份驗證

    • 註冊
    • 登入
  • 票務資訊

    • 查詢可購票活動清單
    • 查詢單一活動資訊
    • 購票
    • 查詢購票結果

    • 新增/修改活動
    • 刪除活動

功能整理完後我們就可以來設計一下API 的規格
我們不使用標準的 RESTful API,Request 依照不同的 API 直接給予需要的,Response 則使用統一的規格

{
	"ResponseStatus": "string",
	"Data": {},
}

ResponseStatus 存放回應的狀態,如果有額外的資料要回傳則存放於 Data

身份驗證

註冊

Request

Method: POST
Path: /api/auth/user
Body:

{
	"Username": "string",
	"Password": "string",
}

Response

{
	"ResponseStatus": "string"
}

登入

Request

Method: POST
Path: /api/auth
Body:

{
	"Username": "string",
	"Password": "string",
}

Response

{
	"ResponseStatus": "string"
}

查詢可購票活動清單

Request

Method: POST
Path: /api/event/list
Body:

{
	"PageNumber": "int",
	"PageSize": "int",
}

Response

{
	"ResponseStatus": "string",
	"Data": {
		"Rows": [
			{
				"Id": "int"
				"Name": "string",
				"Date": "Datetime",
				"StartSaleTime": "Datetime",
				"EndSaleTime": "Datetime",
				"Description": "string",
				"Remerk": "string",
			}
			...
		],
		"TotalCount": "int"
	}
}

查詢單一活動資訊

Request

Method: GET
Path: /api/event/{id}
Body: Empty

Response

{
	"ResponseStatus": "string",
	"Data": {
		"Id": "int",
		"Name": "string",
		"Date": "Datetime",
		"StartSaleTime": "Datetime",
		"EndSaleTime": "Datetime",
		"Description": "string",
		"Remerk": "string",
		"Seat": [
			{
				"Id": "int",
				"Area": "string",
				"Name": "string",
				"Status": "int",
			}
			...
		]
	}
}

購票

Request

Method: POST
Path: /api/ticket
Body:

{
	"event_id": "int",
	"Seat": "string",
}

Response

{
	"ResponseStatus": "string"
}

新增活動

Request

Method: POST
Path: /api/event
Body:

{
	"Name": "string",
	"Date": "Datetime",
	"StartSaleTime": "Datetime",
	"EndSaleTime": "Datetime",
	"Description": "string",
	"Remerk": "string",
	"Seat": [
		{
			"Area": "string",
			"Name": "string",
			"Status": "int",
		}
		...
	]
}

Response

{
	"ResponseStatus": "string"
}

編輯活動

Request

Method: PUT
Path: /api/event/{id}
Body:

{
	"Name": "string",
	"Date": "Datetime",
	"StartSaleTime": "Datetime",
	"EndSaleTime": "Datetime",
	"Description": "string",
	"Remerk": "string",
	"Seat": [
		{
			"Id": "int",
			"Area": "string",
			"Name": "string",
			"Status": "int",
		}
		...
	]
}

Response

{
	"ResponseStatus": "string"
}

目前初步設計 API ,後續實作可能會再依實際情況調整。


上一篇
Day11: 雲端服務介紹-Memorystore for Redis
下一篇
Day13: 設計- Schema
系列文
窮小子的售票系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言